package models;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author eagle
 */
@Entity
@Table(name = "ESTUDIANTE", catalog = "sischool2", schema = "")
@NamedQueries({
    @NamedQuery(name = "Estudiante.findAll", query = "SELECT e FROM Estudiante e"),
    @NamedQuery(name = "Estudiante.findByIdEstudiante", query = "SELECT e FROM Estudiante e WHERE e.idEstudiante = :idEstudiante"),
    @NamedQuery(name = "Estudiante.findByNombreest", query = "SELECT e FROM Estudiante e WHERE e.nombreest = :nombreest"),
    @NamedQuery(name = "Estudiante.findByApellidoest", query = "SELECT e FROM Estudiante e WHERE e.apellidoest = :apellidoest"),
    @NamedQuery(name = "Estudiante.findByDocestudiante", query = "SELECT e FROM Estudiante e WHERE e.docestudiante = :docestudiante"),
    @NamedQuery(name = "Estudiante.findByFechanacimientoest", query = "SELECT e FROM Estudiante e WHERE e.fechanacimientoest = :fechanacimientoest"),
    @NamedQuery(name = "Estudiante.findByGeneroest", query = "SELECT e FROM Estudiante e WHERE e.generoest = :generoest"),
    @NamedQuery(name = "Estudiante.findByAnoingreso", query = "SELECT e FROM Estudiante e WHERE e.anoingreso = :anoingreso"),
    @NamedQuery(name = "Estudiante.findByNombrespadre", query = "SELECT e FROM Estudiante e WHERE e.nombrespadre = :nombrespadre"),
    @NamedQuery(name = "Estudiante.findByApellidospadre", query = "SELECT e FROM Estudiante e WHERE e.apellidospadre = :apellidospadre"),
    @NamedQuery(name = "Estudiante.findByDocpadre", query = "SELECT e FROM Estudiante e WHERE e.docpadre = :docpadre"),
    @NamedQuery(name = "Estudiante.findByTelpadre", query = "SELECT e FROM Estudiante e WHERE e.telpadre = :telpadre"),
    @NamedQuery(name = "Estudiante.findByNombresmadre", query = "SELECT e FROM Estudiante e WHERE e.nombresmadre = :nombresmadre"),
    @NamedQuery(name = "Estudiante.findByApellidosmadre", query = "SELECT e FROM Estudiante e WHERE e.apellidosmadre = :apellidosmadre"),
    @NamedQuery(name = "Estudiante.findByDocmadre", query = "SELECT e FROM Estudiante e WHERE e.docmadre = :docmadre"),
    @NamedQuery(name = "Estudiante.findByTelmadre", query = "SELECT e FROM Estudiante e WHERE e.telmadre = :telmadre"),
    @NamedQuery(name = "Estudiante.findByDireccionest", query = "SELECT e FROM Estudiante e WHERE e.direccionest = :direccionest"),
    @NamedQuery(name = "Estudiante.findByPreinscrito", query = "SELECT e FROM Estudiante e WHERE e.preinscrito = :preinscrito"),
    @NamedQuery(name = "Estudiante.findByInscrito", query = "SELECT e FROM Estudiante e WHERE e.inscrito = :inscrito"),
    @NamedQuery(name = "Estudiante.findByMatriculado", query = "SELECT e FROM Estudiante e WHERE e.matriculado = :matriculado"),
    @NamedQuery(name = "Estudiante.findByFechapreinscripcion", query = "SELECT e FROM Estudiante e WHERE e.fechapreinscripcion = :fechapreinscripcion")})
public class Estudiante implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idEstudiante", nullable = false)
    private Integer idEstudiante;
    @Column(name = "nombreest", length = 45)
    private String nombreest;
    @Column(name = "apellidoest", length = 45)
    private String apellidoest;
    @Column(name = "docestudiante", length = 32)
    private String docestudiante;
    @Column(name = "fechanacimientoest", length = 32)
    private String fechanacimientoest;
    @Column(name = "generoest", length = 10)
    private String generoest;
    @Basic(optional = false)
    @Column(name = "anoingreso", nullable = false)
    private int anoingreso;
    @Column(name = "nombrespadre", length = 45)
    private String nombrespadre;
    @Column(name = "apellidospadre", length = 45)
    private String apellidospadre;
    @Column(name = "docpadre", length = 32)
    private String docpadre;
    @Column(name = "telpadre", length = 32)
    private String telpadre;
    @Column(name = "nombresmadre", length = 45)
    private String nombresmadre;
    @Column(name = "apellidosmadre", length = 45)
    private String apellidosmadre;
    @Column(name = "docmadre", length = 32)
    private String docmadre;
    @Column(name = "telmadre", length = 32)
    private String telmadre;
    @Column(name = "direccionest", length = 100)
    private String direccionest;
    @Column(name = "preinscrito")
    private Boolean preinscrito;
    @Column(name = "inscrito")
    private Boolean inscrito;
    @Column(name = "matriculado")
    private Boolean matriculado;
    @Column(name = "fechapreinscripcion")
    @Temporal(TemporalType.DATE)
    private Date fechapreinscripcion;
    @JoinColumn(name = "telefonosId", referencedColumnName = "idTelefonos", nullable = false)
    @ManyToOne(optional = false)
    private Telefonos telefonosId;
    @JoinColumn(name = "UsuarioId", referencedColumnName = "idUsuario", nullable = false)
    @ManyToOne(optional = false)
    private Usuario usuarioId;
    @JoinColumn(name = "cursoId", referencedColumnName = "idCurso")
    @ManyToOne
    private Curso cursoId;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idEstudiante")
    private List<Calificacion> calificacionList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "estudianteId")
    private List<Observador> observadorList;

    public Estudiante() {
    }

    public Estudiante(Integer idEstudiante) {
        this.idEstudiante = idEstudiante;
    }

    public Estudiante(Integer idEstudiante, int anoingreso) {
        this.idEstudiante = idEstudiante;
        this.anoingreso = anoingreso;
    }

    public Integer getIdEstudiante() {
        return idEstudiante;
    }

    public void setIdEstudiante(Integer idEstudiante) {
        this.idEstudiante = idEstudiante;
    }

    public String getNombreest() {
        return nombreest;
    }

    public void setNombreest(String nombreest) {
        this.nombreest = nombreest;
    }

    public String getApellidoest() {
        return apellidoest;
    }

    public void setApellidoest(String apellidoest) {
        this.apellidoest = apellidoest;
    }

    public String getDocestudiante() {
        return docestudiante;
    }

    public void setDocestudiante(String docestudiante) {
        this.docestudiante = docestudiante;
    }

    public String getFechanacimientoest() {
        return fechanacimientoest;
    }

    public void setFechanacimientoest(String fechanacimientoest) {
        this.fechanacimientoest = fechanacimientoest;
    }

    public String getGeneroest() {
        return generoest;
    }

    public void setGeneroest(String generoest) {
        this.generoest = generoest;
    }

    public int getAnoingreso() {
        return anoingreso;
    }

    public void setAnoingreso(int anoingreso) {
        this.anoingreso = anoingreso;
    }

    public String getNombrespadre() {
        return nombrespadre;
    }

    public void setNombrespadre(String nombrespadre) {
        this.nombrespadre = nombrespadre;
    }

    public String getApellidospadre() {
        return apellidospadre;
    }

    public void setApellidospadre(String apellidospadre) {
        this.apellidospadre = apellidospadre;
    }

    public String getDocpadre() {
        return docpadre;
    }

    public void setDocpadre(String docpadre) {
        this.docpadre = docpadre;
    }

    public String getTelpadre() {
        return telpadre;
    }

    public void setTelpadre(String telpadre) {
        this.telpadre = telpadre;
    }

    public String getNombresmadre() {
        return nombresmadre;
    }

    public void setNombresmadre(String nombresmadre) {
        this.nombresmadre = nombresmadre;
    }

    public String getApellidosmadre() {
        return apellidosmadre;
    }

    public void setApellidosmadre(String apellidosmadre) {
        this.apellidosmadre = apellidosmadre;
    }

    public String getDocmadre() {
        return docmadre;
    }

    public void setDocmadre(String docmadre) {
        this.docmadre = docmadre;
    }

    public String getTelmadre() {
        return telmadre;
    }

    public void setTelmadre(String telmadre) {
        this.telmadre = telmadre;
    }

    public String getDireccionest() {
        return direccionest;
    }

    public void setDireccionest(String direccionest) {
        this.direccionest = direccionest;
    }

    public Boolean getPreinscrito() {
        return preinscrito;
    }

    public void setPreinscrito(Boolean preinscrito) {
        this.preinscrito = preinscrito;
    }

    public Boolean getInscrito() {
        return inscrito;
    }

    public void setInscrito(Boolean inscrito) {
        this.inscrito = inscrito;
    }

    public Boolean getMatriculado() {
        return matriculado;
    }

    public void setMatriculado(Boolean matriculado) {
        this.matriculado = matriculado;
    }

    public Date getFechapreinscripcion() {
        return fechapreinscripcion;
    }

    public void setFechapreinscripcion(Date fechapreinscripcion) {
        this.fechapreinscripcion = fechapreinscripcion;
    }

    public Telefonos getTelefonosId() {
        return telefonosId;
    }

    public void setTelefonosId(Telefonos telefonosId) {
        this.telefonosId = telefonosId;
    }

    public Usuario getUsuarioId() {
        return usuarioId;
    }

    public void setUsuarioId(Usuario usuarioId) {
        this.usuarioId = usuarioId;
    }

    public Curso getCursoId() {
        return cursoId;
    }

    public void setCursoId(Curso cursoId) {
        this.cursoId = cursoId;
    }

    public List<Calificacion> getCalificacionList() {
        return calificacionList;
    }

    public void setCalificacionList(List<Calificacion> calificacionList) {
        this.calificacionList = calificacionList;
    }

    public List<Observador> getObservadorList() {
        return observadorList;
    }

    public void setObservadorList(List<Observador> observadorList) {
        this.observadorList = observadorList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idEstudiante != null ? idEstudiante.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Estudiante)) {
            return false;
        }
        Estudiante other = (Estudiante) object;
        if ((this.idEstudiante == null && other.idEstudiante != null) || (this.idEstudiante != null && !this.idEstudiante.equals(other.idEstudiante))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "models.Estudiante[idEstudiante=" + idEstudiante + "]";
    }

}
